导入 sys
导入 os
sys.path.追加(os.路径.绝对路径(r'G:\grasspy_zwmodules\flask\zwflask\src'))


从 福利哥 导入 〇福利哥
从 福利哥 导入 渲染模板

# 从 flask_sqlalchemy 导入 SQLAlchemy
# from flask import render_template as 渲染模板

从 福利哥_数据官 导入 〇数据官
# from flask_migrate import Migrate
从 福利哥_迁移 导入 〇迁移

应用 = 〇福利哥(__名称__)

应用.配置.从映射(
    匚安全密钥='开发',
    # DEBUG = True,  # 全局设置优先？
)

# 数据库配置
匚主机名 = 'bdm721860674.my3w.com' # '127.0.0.1'
匚端口     = '3306'
匚数据库 = 'bdm721860674_db' # '福利哥测试1'
匚用户名 = 'bdm721860674' # 'root'
匚密码 = 'Wulao2020' # '1234'
匚数据库URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.格式化(匚用户名,
            匚密码, 匚主机名, 匚端口, 匚数据库)
应用.配置['SQLALCHEMY_DATABASE_URI'] = 匚数据库URI
应用.配置['SQLALCHEMY_TRACK_MODIFICATIONS'] = 真

数据库 = 〇数据官(应用)
迁移 = 〇迁移(应用, 数据库)
# 数据库 = SQLAlchemy(应用)
# 应用.配置.从py文件('配置.py', 静默=假)

类 〇文章(数据库.〇模型):
    # 表名默认为不含 〇 的类名
    # __tablename__ = '文章1'
    # __表名__ = '文章1'
    id = 数据库.〇列(数据库.〇整数, 主键=真, 自增=真)
    标题 = 数据库.〇列(数据库.〇字符串(200), 可为空=假)
    内容 = 数据库.〇列(数据库.〇文本, 可为空=假)
    作者id = 数据库.〇列(数据库.〇整数, 数据库.〇外键("用户.id"))
    作者 = 数据库.关系("〇用户", 反向引用="文章々")

类 〇用户(数据库.〇模型):
    id = 数据库.〇列(数据库.〇整数, 主键=真, 自增=真)
    用户名 = 数据库.〇列(数据库.〇字符串(200), 可为空=假)
    密码 = 数据库.〇列(数据库.〇字符串(200), 可为空=假)

类 〇用户补充信息(数据库.〇模型):
    id = 数据库.〇列(数据库.〇整数, 主键=真, 自增=真)
    学校 = 数据库.〇列(数据库.〇字符串(100))
    用户id = 数据库.〇列(数据库.〇整数, 数据库.〇外键("用户.id"))
    用户 = 数据库.关系("〇用户", 反向引用=数据库.反向引用("补充信息", 使用列表=假))

# 数据库.删除全部()
# 数据库.创建全部()

@应用.路由('/一对一')
套路 一对一():
    用户 = 〇用户.查询.筛选_依据(id=1).第一条()
    补充信息 = 〇用户补充信息(学校='中科大')
    用户.补充信息 = 补充信息
    数据库.会话.提交()
    返回 '一对一数据操作成功'

@应用.路由('/一对多')
套路 一对多():
    文章1 = 〇文章(标题='xxx', 内容='111')
    文章2 = 〇文章(标题='yyy', 内容='222')
    用户 = 〇用户(用户名='老吴')
    文章1.作者 = 用户
    文章2.作者 = 用户
    数据库.会话.添加(文章1, 文章2)
    数据库.会话.提交()
    打印(用户.文章々)
    返回 '一对多数据操作成功'

@应用.路由('/文章')
套路 文章视图():
    # 文章1 = 〇文章(标题='你是人间四月天', 内容='四月天, 是解放区的天')
    # 数据库.会话.添加(文章1)
    # 数据库.会话.提交()
    文章1 = 〇文章.查询.筛选_依据(id=1)[0]
    # 打印(文章1.标题)
    # 文章1.内容 = '四月天, 是晴朗的天'
    # 数据库.会话.提交()
    〇文章.查询.筛选_依据(id=1).删除()
    数据库.会话.提交()
    返回 '数据操作成功'

@应用.路由('/')
套路 你好():
    引擎 = 数据库.获取引擎()
    连接对象 = 引擎.连接()
    结果 = 连接对象.执行("select 1")
    打印(结果.取一行())
    连接对象.关闭()
    返回 '你吃了吗'

